from django.shortcuts import render
from libs.captcha.captcha import captcha
from rest_framework.views import APIView
from django_redis import get_redis_connection
from . import constants
from django.http import HttpResponse
# Create your views here.

# 验证码 和 短信验证码的2个接口

# APIView
# GenericAPIView
# ListAPIView,CreateAPIView

# 因为我没有用到序列化器,所以集成自APIView
class RegisterImageCodeView(APIView):

    """
    GET /verifications/imagecodes/(?P<image_code_id>.+)/
    image_code_id 是作为 判断 用户 输入的时候 查询 redis的依据
    image_code_id js生成的

    """
    def get(self,request,image_code_id):

        # 1. 生成验证码和验证码图片
        text,image = captcha.generate_captcha()
        # 2. 保存验证码到redis中
        # 传入 settings 中的一个别名就可以
        # ctrl+shift+t 打开cmd的在同一个窗口打开新的
        redis_conn = get_redis_connection('code')

        # redis_conn.setex('img_%s'%image_code_id,60,text)
        redis_conn.setex('img_%s'%image_code_id,constants.IMAGE_EXPIRE_TIME,text)
        # 3. 返回图片
        return HttpResponse(image,content_type='image/jpeg')


